//获取应用实例
const App = getApp()

// 上下文对象
var that;

Page({

  data: {
    isLogin: false,
    is_tel:true,
    token:'',
    is_user:false,
    userInfo: {}, // 用户信息
    available_num: 0, // 可用抽奖的次数，可自定义设置或者接口返回
    is_play: false, // 是否在运动中，避免重复启动bug
    start_angle: 0, // 转动开始时初始角度=0位置指向正上方，按顺时针设置，可自定义设置
    base_circle_num: 6, // 基本圈数，就是在转到（最后一圈）结束圈之前必须转够几圈 ，可自定义设置
    low_circle_num: 3, // 在第几圈开始进入减速圈（必须小于等于基本圈数），可自定义设置
    add_angle: 9, // 追加角度，此值越大转动越快，请保证360/add_angle=一个整数，比如1/2/3/4/5/6/8/9/10/12等
    use_speed: 1, // 当前速度，与正常转速值相等
    nor_speed: 5, // 正常转速，在减速圈之前的转速，可自定义设置
    low_speed: 8, // 减速转速，在减速圈的转速，可自定义设置
    end_speed: 12, // 最后转速，在结束圈的转速，可自定义设置
    random_angle: 90, // 中奖角度，也是随机数，也是结束圈停止的角度，这个值采用系统随机或者接口返回
    change_angle: 0, // 变化角度计数，0开始，一圈360度，基本是6圈，那么到结束这个值=6*360+random_angle；同样change_angle/360整除表示走过一整圈
    xchange_angle: 0,
    // 存放奖项容器，可自定义设置
    Angle: [{
        startAngle: 288,
        endAngle: 360,
        angle: 324,
      },
      {
        startAngle: 216,
        endAngle: 288,
        angle: 252,
      },
      {
        startAngle: 144,
        endAngle: 216,
        angle: 180,
      },
      {
        startAngle: 72,
        endAngle: 144,
        angle: 108,
      },

      {
        startAngle: 1,
        endAngle: 72,
        angle: 36,
      },

    ],
    //奖品列表
    Jack_pots: [ ],
    animationData: {},
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    that = this;
  },
/**
   * 获取大转盘详情
   */
  getLotteryInfo() {
    let _this = this;
    App._get('Lottery/index', {
    }, result => {
      _this.setData({
        Jack_pots:result.data.jiangpin,
        available_num:result.data.lotteryInfo.cishu
      })
      console.log(result)
    });
  },
   /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    let _this = this;
    _this.getLotteryInfo()
    _this.setData({
      isLogin: App.checkIsLogin()
    });
    // 获取当前用户信息
    _this.getUserDetail();
  },
  /**
   * 获取当前用户信息
   */
  getUserDetail() {
    let _this = this;
    App._get('user.index/detail', {}, function(result) {
      _this.setData(result.data);
    });
  },
  /**
   * 启动抽奖
   */
  luckDrawStart: function () {
    let that = this;
    if (!that.data.isLogin) {
      App.doLogin();
      return false;
    }
    if(that.data.userInfo.is_reg == 0){
      that.setData({
        is_tel:false,
        is_user:true,
      })
      return false;
    }
    if(that.data.is_play){
      return;
    }
    if (that.data.available_num == 0) {
      wx.showToast({
        title: '您的抽奖机会已用完',
        icon:'none'
      })
      return false;
    }
    //1. 阻止运动中重复点击
    if (!that.data.is_play) {
      // 设置标识在运动中
      that.setData({
        is_play: true
      });
      
      App._get('Lottery/startUp', {
      }, result => {
        let Jack_pots = that.data.Jack_pots;
        let index = result.data.zhongJiangIndex;    //中奖索引 
        // 2.重置参数
        that.luckDrawReset();
        // 设置随机数 几率随机，直接写或者也可从服务端获取几率
        that.setData({
          random_angle: that.data.Jack_pots[index].angle, 
          zjName: result.data.zjName,
          jiang: result.data.jiang,
          available_num:that.data.available_num-1
        });
        // 3.运动函数
        setTimeout(that.luckDrawChange, that.data.use_speed);
      });
    
    }
  },

  /**
   * 转盘运动
   */
  luckDrawChange: function () {
    // 继续运动
    if (that.data.change_angle >= that.data.base_circle_num * 360 + that.data.random_angle) { // 已经到达结束位置
      // 提示中奖，
      //that.getLuckDrawResult();
      // 运动结束设置可用抽奖的次数和激活状态设置可用
      that.luckDrawEndset();
      wx.showModal({
       title:that.data.jiang,
       content:that.data.zjName
      })
    } else { // 运动
      if (that.data.change_angle < that.data.low_circle_num * 360) { // 正常转速
        // console.log("正常转速")
        that.data.use_speed = that.data.nor_speed
      } else if (that.data.change_angle >= that.data.low_circle_num * 360 && that.data.change_angle <= that.data.base_circle_num * 360) { // 减速圈
        // console.log("减速圈")
        that.data.use_speed = that.data.low_speed
      } else if (that.data.change_angle > that.data.base_circle_num * 360) { // 结束圈
        // console.log("结束圈")

        that.data.use_speed = that.data.end_speed
        // console.log('结束圈：'+that.data.change_angle);
      }

      // 累加变化计数
      that.setData({
        change_angle: that.data.change_angle + that.data.add_angle >= that.data.base_circle_num * 360 + that.data.random_angle ? that.data.base_circle_num * 360 + that.data.random_angle : that.data.change_angle + that.data.add_angle
      });
      setTimeout(that.luckDrawChange, that.data.use_speed);
    }

  },

  /**
   * 重置参数
   */
  luckDrawReset: function () {
    // 转动开始时首次点亮的位置，可自定义设置
    that.setData({
      start_angle: 0
    });
    // 当前速度，与正常转速值相等
    that.setData({
      use_speed: that.data.nor_speed
    });
    // 中奖索引，也是随机数，也是结束圈停止的位置，这个值采用系统随机或者接口返回
    that.setData({
      random_angle: 0
    });
    // 变化计数，0开始，必须实例有12个奖项，基本是6圈，那么到结束这个值=6*12+random_number；同样change_num/12整除表示走过一整圈
    that.setData({
      change_angle: 0
    });
  },

  /**
   * 更新状态（运动结束设置可用抽奖的次数和激活状态设置可用）
   */
  luckDrawEndset: function () {
    // 是否在运动中，避免重复启动bug
    that.setData({
      is_play: false
    })
  },
  getPhoneNumber: function (e) {
    var _this = this;
    console.log(_this.data.token)
    if (e.detail.errMsg == 'getPhoneNumber:ok') {
      console.log(e)
      let encryptedData = encodeURIComponent(e.detail.encryptedData)
      let iv = e.detail.iv
      let tk = _this.data.token
      App._post_form('user/phoneNumber', {
        tokens: tk,
        encryptedData: encryptedData,
        iv: iv,
        type:'lottery',
        user_id: _this.data.userInfo.user_id,
      }, result => {
        console.log(result.data.userInfo)
        
        if(result.data.userInfo.is_reg == 1){
          _this.getUserDetail();
          _this.getLotteryInfo()
          _this.setData({
            is_tel:true,
            is_user:false,
          })
        }else{
          wx.showModal({
            title: '友情提示',
            content: '授权失败',
            showCancel: false,
          });
        }
      }, false, () => {
        wx.hideLoading();
      });
    }

  },
})